Conversation
CheezItMan
left a comment
There was a problem hiding this comment.
Nice work, you have working algorithms, but some inefficiencies, take a look at my comments and let me know if you have questions.
| raise NotImplementedError, "Method not implemented" | ||
| return s if s.length == 0 | ||
| last = s[-1] | ||
| s = s[0..-2] |
There was a problem hiding this comment.
This creates a new string which increases the time and space time complexity.
So the time and space complexity is O(n^2).
| # Time complexity: ? | ||
| # Space complexity: ? | ||
| # Time complexity: O(n) where n is the length of the string | ||
| # Space complexity: O(1) |
There was a problem hiding this comment.
Space complexity will be O(n) since you end up using the system stack.
|
|
||
| # Time complexity: ? | ||
| # Space complexity: ? | ||
| def reverse_helper(s, first_index, last_index) |
| def nested(s) | ||
| raise NotImplementedError, "Method not implemented" | ||
| return true if s == "" | ||
| return false if !s.include?("(") |
There was a problem hiding this comment.
This isn't a good idea since it goes through the entire length of the string. That means your algorithm is O(n^2).
Instead just check the 1st and last character.
|
|
||
| # Time complexity: ? | ||
| # Space complexity: ? | ||
| # Time complexity: O(n) where n is the length of the array |
| raise NotImplementedError, "Method not implemented" | ||
| return true if s.empty? | ||
| if s[0] == s[-1] | ||
| s.sub!(s[0], "") |
There was a problem hiding this comment.
sub is an O(n) algorithm, so this is an O(n) operation you are doing n times so the full algorithm is O(n^2) for both time and space complexity.
Instead think about tracking the left and right indexes adjusting them each recursive call.
| # Space complexity: ? | ||
| # Time complexity: O(n) where n is the lenght of the smaller number | ||
| # Space complexity: O(1) because there's no variable storing the values of the numbers | ||
| def digit_match(n, m) |
No description provided.